/**
 * 
 */
package uea.pdd.pf2.controller;

import java.util.List;

import android.content.Context;
import android.util.Log;

import uea.pdd.pf2.MainActivity;
import uea.pdd.pf2.MedicActivity;
import uea.pdd.pf2.model.IRepositorioMedicamentos;
import uea.pdd.pf2.model.Medicamento;
import uea.pdd.pf2.model.RepositorioMedicamentosDB;

/**  * Essa classe eh uma ponte entre a camada de view e o repositorio.  
 * * Basicamente sao feitas aqui algumas validacoes e chamadas a metodos   
 * * do repositorio.    
 * * */ 

/**
 * @author fernando luna
 *
 */
public class ControladorMedicamentos {
	
	IRepositorioMedicamentos repoMedicamentos;
	
	public ControladorMedicamentos(Context contexto){
		repoMedicamentos = RepositorioMedicamentosDB.getInstance(contexto);
	}
	
	public void adicionarMedicamento(Medicamento medicamento){
		
		Log.i(MainActivity.CATEGORY, "nome = " + medicamento.getNome_med());
		Log.i(MainActivity.CATEGORY, "hora = " + medicamento.getHora_med());
		Log.i(MainActivity.CATEGORY, "frequencia = " + medicamento.getFreq_med());
		Log.i(MainActivity.CATEGORY, "qdt de usos = " + medicamento.getQtdu_med());
		
		if (medicamento.getNome_med().length() != 0){
			repoMedicamentos.salvarMedicamento(medicamento);
		}
	}
	
	public void removerMedicamento(Integer id){
		if (repoMedicamentos.procurarMedicamentoPorId(id) != null){
			repoMedicamentos.removerMedicamento(id);
		}
	}
	
	public void atualizarMedicamento(Medicamento medicamento){
		if (medicamento.getNome_med().length() != 0){
			repoMedicamentos.atualizarMedicamento(medicamento);
		}
	}
	
	public List<Medicamento> listarMedicamento(){
		Log.d(MainActivity.CATEGORY, "Listando medicamentos...");
		return repoMedicamentos.listarMedicamento();
	}
	
	public List<Medicamento> procurarMedicamento(String nome){
		Log.v(MainActivity.CATEGORY, "Metodo procurarMedicamento(String nome) " +
				"Parametro fornecido: etProcurar");
		Log.i(MainActivity.CATEGORY, "Retorna uma instancia de RepositorioMedicamentosDB");
		return repoMedicamentos.procurarMedicamento(nome);
	}
	
	public Medicamento procurarMedicamentoPorId(Integer id){
		return repoMedicamentos.procurarMedicamentoPorId(id);
	}

}
